package com.example.demo.config;

import com.example.demo.model.User;

import com.example.demo.repository.UserRepository;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.security.core.userdetails.UserDetails;

import org.springframework.security.core.userdetails.UserDetailsService;

import org.springframework.security.core.userdetails.UsernameNotFoundException;

import org.springframework.stereotype.Service;

import org.springframework.security.core.userdetails.User.UserBuilder;

import static org.springframework.security.core.userdetails.User.withUsername;

@Service

public class DatabaseUserDetailsService implements UserDetailsService {

    @Autowired

    private UserRepository userRepository;

    @Override

    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {

        User user = userRepository.findByUsername(username)

                .orElseThrow(() -> new UsernameNotFoundException("User not found"));
        UserBuilder builder = withUsername(user.getUsername());
        builder.password(user.getPassword());

        return builder.build();

    }

}